home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Science⁄Math / Scientist's Helper src / s.helper.2 / include⁄all.h next >
Encoding:
Text File  |  1986-01-30  |  53.5 KB  |  2,350 lines  |  [TEXT/EDIT]

  1. /* include/types */
  2. typedef    unsigned char        Byte;
  3. typedef char                SignedByte;
  4. typedef    char *                Ptr;
  5. typedef    Ptr *                Handle;
  6. typedef    short                (*ProcPtr)();
  7. typedef    char                Boolean;
  8.  
  9. #define    TRUE    (-1)
  10. #define    FALSE    0
  11.  
  12. #define    String(x)        struct {                        \
  13.                                 unsigned char length;    \
  14.                                 unsigned char text[x];    \
  15.                             }
  16. typedef    String(255)            Str255;
  17. typedef Str255 *            StringPtr;
  18. typedef Str255 **            StringHandle;
  19.  
  20. typedef short                OSErr;
  21. typedef long                OSType;
  22.  
  23.  
  24. /* include/quickdraw */
  25. #define    srcCopy            0
  26. #define    srcOr            1
  27. #define    srcXor            2
  28. #define    srcBic            3
  29. #define    notSrcCopy        4
  30. #define    notSrcOr        5
  31. #define    notSrcXor        6
  32. #define    notSrcBic        7
  33. #define    patCopy            8
  34. #define    patOr            9
  35. #define    patXor            10
  36. #define    patBic            11
  37. #define    notPatCopy        12
  38. #define    notPatOr        13
  39. #define    notPatXor        14
  40. #define    notPatBic        15
  41.  
  42. #define    normalBit        0
  43. #define    inverseBit        1
  44. #define    redBit            4
  45. #define    greenBit        3
  46. #define    blueBit            2
  47. #define    cyanBit            8
  48. #define    magentaBit        7
  49. #define    yellowBit        6
  50. #define    blackBit        5
  51.  
  52. #define    blackColor        33
  53. #define    whiteColor        30
  54. #define    redColor        205
  55. #define    greenColor        341
  56. #define    blueColor        409
  57. #define    cyanColor        273
  58. #define    magentaColor    137
  59. #define    yellowColor        69
  60.  
  61. #define    picLParen        0
  62. #define    picRParen        1
  63.  
  64. typedef    char                QDByte;
  65. typedef    QDByte *            QDPtr;
  66. typedef    QDPtr *                QDHandle;
  67. typedef unsigned char        Pattern[8];
  68. typedef int                 Bits16[16];
  69.  
  70. #define    frameMode    0
  71. #define    paintMode    1
  72. #define    eraseMode    2
  73. #define    invertMode    3
  74. #define    fillMode    4
  75.  
  76. typedef    unsigned short        Style;
  77. #define    boldStyle        0x01
  78. #define    italicStyle        0x02
  79. #define    underlineStyle    0x04
  80. #define    outlineStyle    0x08
  81. #define    shadowStyle        0x10
  82. #define    condenseStyle    0x20
  83. #define    extendStyle        0x40
  84.  
  85. struct FontInfo {
  86.     short    ascent;
  87.     short    descent;
  88.     short    widMax;
  89.     short    leading;
  90. };
  91. typedef struct FontInfo     FontInfo;
  92.  
  93. struct Point {
  94.     short    v;
  95.     short    h;
  96. };
  97. typedef    struct Point        Point;
  98.  
  99. #define    vh(x)    ((int *)(&(x).v))
  100.  
  101. struct Rect {
  102.     short    top;
  103.     short    left;
  104.     short    bottom;
  105.     short    right;
  106. };
  107. typedef struct Rect            Rect;
  108.  
  109. #define    topLeft(x)    (*(struct Point *)(&(x).top))
  110. #define    botRight(x)    (*(struct Point *)(&(x).bottom))
  111.  
  112. struct BitMap {
  113.     QDPtr        baseAddr;
  114.     short        rowBytes;
  115.     Rect        bounds;
  116. };
  117. typedef struct BitMap        BitMap;
  118.  
  119. struct Cursor {
  120.     Bits16            data;
  121.     Bits16            mask;
  122.     Point            hotSpot;
  123. };
  124. typedef struct Cursor        Cursor;
  125.  
  126. struct PenState {
  127.     Point            pnLoc;
  128.     Point            pnSize;
  129.     short            pnMode;
  130.     Pattern            pnPat;
  131. };
  132. typedef struct PenState        PenState;
  133.  
  134. struct Region {
  135.     short        rgnSize;
  136.     Rect        rgnBBox;
  137. };
  138. typedef struct Region        Region;
  139. typedef    struct Region *        RgnPtr;
  140. typedef    struct Region **    RgnHandle;
  141.  
  142. struct Picture {
  143.     short        picSize;
  144.     Rect        picFrame;
  145. };
  146. typedef struct Picture        Picture;
  147. typedef    struct Picture *    PicPtr;
  148. typedef    struct Picture **    PicHandle;
  149.  
  150. struct Polygon {
  151.     short            polySize;
  152.     Rect            polyBBox;
  153.     Point            polyPoints[1];
  154. };
  155. typedef struct Polygon        Polygon;
  156. typedef    struct Polygon *    PolyPtr;
  157. typedef    struct Polygon **    PolyHandle;
  158.  
  159. struct QDProcs {
  160.     QDPtr    textProc;
  161.     QDPtr    lineProc;
  162.     QDPtr    rectProc;
  163.     QDPtr    rRectProc;
  164.     QDPtr    ovalProc;
  165.     QDPtr    arcProc;
  166.     QDPtr    polyProc;
  167.     QDPtr    rgnProc;
  168.     QDPtr    bitsProc;
  169.     QDPtr    commentProc;
  170.     QDPtr    txMeasProc;
  171.     QDPtr    getPicProc;
  172.     QDPtr    putPicProc;
  173. };
  174. typedef struct QDProcs        QDProcs;
  175. typedef    struct QDProcs *    QDProcsPtr;
  176.  
  177. struct GrafPort {
  178.     short                device;
  179.     BitMap                portBits;
  180.     Rect                portRect;
  181.     RgnHandle            visRgn;
  182.     RgnHandle            clipRgn;
  183.     Pattern                bkPat;
  184.     Pattern                fillPat;
  185.     Point                pnLoc;
  186.     Point                pnSize;
  187.     short                pnMode;
  188.     Pattern                pnPat;
  189.     short                pnVis;
  190.     short                txFont;
  191.     Style                txFace;
  192.     short                txMode;
  193.     short                txSize;
  194.     long                spExtra;
  195.     long                fgColor;
  196.     long                bkColor;
  197.     short                colorBit;
  198.     short                patStretch;
  199.     QDHandle            picSave;
  200.     QDHandle            rgnSave;
  201.     QDHandle            polySave;
  202.     QDProcsPtr            grafProcs;
  203. };
  204. typedef struct GrafPort        GrafPort;
  205. typedef    struct GrafPort *    GrafPtr;
  206.  
  207. GrafPtr                thePort;
  208. Pattern                white;
  209. Pattern                black;
  210. Pattern                gray;
  211. Pattern                ltGray;
  212. Pattern                dkGray;
  213. Cursor                arrow;
  214. BitMap                screenBits;
  215. long                randSeed;
  216.  
  217. pascal void                    InitGraf()            =    0xa86e;
  218. pascal void                    OpenPort()            =    0xa86f;
  219. pascal void                    InitPort()            =    0xa86d;
  220. pascal void                    ClosePort()            =    0xa87d;
  221. pascal void                    SetPort()            =    0xa873;
  222. pascal void                    GetPort()            =    0xa874;
  223. pascal void                    GrafDevice()        =    0xa872;
  224. pascal void                    SetPortBits()        =    0xa875;
  225. pascal void                    PortSize()            =    0xa876;
  226. pascal void                    MovePortTo()        =    0xa877;
  227. pascal void                    SetOrigin()            =    0xa878;
  228. pascal void                    SetClip()            =    0xa879;
  229. pascal void                    GetClip()            =    0xa87a;
  230. pascal void                    ClipRect()            =    0xa87b;
  231. pascal void                    BackPat()            =    0xa87c;
  232. pascal void                    InitCursor()        =    0xa850;
  233. pascal void                    SetCursor()            =    0xa851;
  234. pascal void                    HideCursor()        =    0xa852;
  235. pascal void                    ShowCursor()        =    0xa853;
  236. pascal void                    ObscureCursor()        =    0xa856;
  237. pascal void                    HidePen()            =    0xa896;
  238. pascal void                    ShowPen()            =    0xa897;
  239. pascal void                    GetPen()            =    0xa89a;
  240. pascal void                    GetPenState()        =    0xa898;
  241. pascal void                    SetPenState()        =    0xa899;
  242. pascal void                    PenSize()            =    0xa89b;
  243. pascal void                    PenMode()            =    0xa89c;
  244. pascal void                    PenPat()            =    0xa89d;
  245. pascal void                    PenNormal()            =    0xa89e;
  246. pascal void                    MoveTo()            =    0xa893;
  247. pascal void                    Move()                =    0xa894;
  248. pascal void                    LineTo()            =    0xa891;
  249. pascal void                    Line()                =    0xa892;
  250. pascal void                    TextFont()            =    0xa887;
  251. pascal void                    TextFace()            =    0xa888;
  252. pascal void                    TextMode()            =    0xa889;
  253. pascal void                    TextSize()            =    0xa88a;
  254. pascal void                    SpaceExtra()        =    0xa88e;
  255. pascal void                    DrawChar()            =    0xa883;
  256. pascal void                    DrawString()        =    0xa884;
  257. pascal void                    DrawText()            =    0xa885;
  258. pascal short                CharWidth()            =    0xa88d;
  259. pascal short                StringWidth()        =    0xa88c;
  260. pascal short                TextWidth()            =    0xa886;
  261. pascal void                    GetFontInfo()        =    0xa88b;
  262. pascal void                    SetRect()            =    0xa8a7;
  263. pascal void                    OffsetRect()        =    0xa8a8;
  264. pascal void                    InsetRect()            =    0xa8a9;
  265. pascal Boolean                SectRect()            =    0xa8aa;
  266. pascal void                    UnionRect()            =    0xa8ab;
  267. pascal Boolean                PtInRect()            =    0xa8ad;
  268. pascal void                    Pt2Rect()            =    0xa8ac;
  269. pascal void                    PtToAngle()            =    0xa8c3;
  270. pascal Boolean                EqualRect()            =    0xa8a6;
  271. pascal Boolean                EmptyRect()            =    0xa8ae;
  272. pascal void                    FrameRect()            =    0xa8a1;
  273. pascal void                    PaintRect()            =    0xa8a2;
  274. pascal void                    EraseRect()            =    0xa8a3;
  275. pascal void                    InvertRect()        =    0xa8a4;
  276. pascal void                    FillRect()            =    0xa8a5;
  277. pascal void                    FrameRoundRect()    =    0xa8b0;
  278. pascal void                    PaintRoundRect()    =    0xa8b1;
  279. pascal void                    EraseRoundRect()    =    0xa8b2;
  280. pascal void                    InvertRoundRect()    =    0xa8b3;
  281. pascal void                    FillRoundRect()        =    0xa8b4;
  282. pascal RgnHandle            NewRgn()            =    0xa8d8;
  283. pascal void                    DisposeRgn()        =    0xa8d9;
  284. pascal void                    CopyRgn()            =    0xa8dc;
  285. pascal void                    SetEmptyRgn()        =    0xa8dd;
  286. pascal void                    SetRectRgn()        =    0xa8de;
  287. pascal void                    RectRgn()            =    0xa8df;
  288. pascal void                    OpenRgn()            =    0xa8da;
  289. pascal void                    CloseRgn()            =    0xa8db;
  290. pascal void                    OffsetRgn()            =    0xa8e0;
  291. pascal void                    InsetRgn()            =    0xa8e1;
  292. pascal void                    SectRgn()            =    0xa8e4;
  293. pascal void                    UnionRgn()            =    0xa8e5;
  294. pascal void                    DiffRgn()            =    0xa8e6;
  295. pascal void                    XorRgn()            =    0xa8e7;
  296. pascal Boolean                PtInRgn()            =    0xa8e8;
  297. pascal Boolean                RectInRgn()            =    0xa8e9;
  298. pascal Boolean                EqualRgn()            =    0xa8e3;
  299. pascal Boolean                EmptyRgn()            =    0xa8e2;
  300. pascal void                    FrameRgn()            =    0xa8d2;
  301. pascal void                    PaintRgn()            =    0xa8d3;
  302. pascal void                    EraseRgn()            =    0xa8d4;
  303. pascal void                    InvertRgn()            =    0xa8d5;
  304. pascal void                    FillRgn()            =    0xa8d6;
  305. pascal void                    ScrollRect()        =    0xa8ef;
  306. pascal void                    CopyBits()            =    0xa8ec;
  307. pascal void                    AddPt()                =    0xa87e;
  308. pascal void                    SubPt()                =    0xa87f;
  309. pascal void                    SetPt()                =    0xa880;
  310. pascal Boolean                EqualPt()            =    0xa881;
  311. pascal void                    LocalToGlobal()        =    0xa870;
  312. pascal void                    GlobalToLocal()        =    0xa871;
  313. pascal short                Random()            =    0xa861;
  314. pascal Boolean                GetPixel()            =    0xa865;
  315. pascal void                    StuffHex()            =    0xa866;
  316. pascal void                    ScalePt()            =    0xa8f8;
  317. pascal void                    MapPt()                =    0xa8f9;
  318. pascal void                    MapRect()            =    0xa8fa;
  319. pascal void                    MapRgn()            =    0xa8fb;
  320. pascal PicHandle            OpenPicture()        =    0xa8f3;
  321. pascal void                    PicComment()        =    0xa8f2;
  322. pascal void                    ClosePicture()        =    0xa8f4;
  323. pascal void                    DrawPicture()        =    0xa8f6;
  324. pascal void                    KillPicture()        =    0xa8f5;
  325. pascal PolyHandle            OpenPoly()            =    0xa8cb;
  326. pascal void                    ClosePoly()            =    0xa8cc;
  327. pascal void                    KillPoly()            =    0xa8cd;
  328. pascal void                    OffsetPoly()        =    0xa8ce;
  329. pascal void                    FramePoly()            =    0xa8c6;
  330. pascal void                    PaintPoly()            =    0xa8c7;
  331. pascal void                    ErasePoly()            =    0xa8c8;
  332. pascal void                    InvertPoly()        =    0xa8c9;
  333. pascal void                    FillPoly()            =    0xa8ca;
  334. pascal void                    MapPoly()            =    0xa8fc;
  335. pascal void                    SetStdProcs()        =    0xa8ea;
  336. pascal void                    StdText()            =    0xa882;
  337. pascal void                    StdLine()            =    0xa890;
  338. pascal void                    StdRect()            =    0xa8a0;
  339. pascal void                    StdRRect()            =    0xa8af;
  340. pascal void                    StdOval()            =    0xa8b6;
  341. pascal void                    StdArc()            =    0xa8bd;
  342. pascal void                    StdPoly()            =    0xa8c5;
  343. pascal void                    StdRgn()            =    0xa8d1;
  344. pascal void                    StdBits()            =    0xa8eb;
  345. pascal void                    StdComment()        =    0xa8f1;
  346. pascal short                StdTxMeasure()        =    0xa8ed;
  347. pascal void                    StdGetPic()            =    0xa8ee;
  348. pascal void                    StdPutPic()            =    0xa8f0;
  349. pascal void                    ForeColor()            =    0xa862;
  350. pascal void                    BackColor()            =    0xa863;
  351. pascal void                    ColorBit()            =    0xa864;
  352. pascal void                    FrameOval()            =    0xa8b7;
  353. pascal void                    PaintOval()            =    0xa8b8;
  354. pascal void                    EraseOval()            =    0xa8b9;
  355. pascal void                    InvertOval()        =    0xa8ba;
  356. pascal void                    FillOval()            =    0xa8bb;
  357. pascal void                    FrameArc()            =    0xa8be;
  358. pascal void                    PaintArc()            =    0xa8bf;
  359. pascal void                    EraseArc()            =    0xa8c0;
  360. pascal void                    InvertArc()            =    0xa8c1;
  361. pascal void                    FillArc()            =    0xa8c2;
  362.  
  363. char *ctop();
  364. char *ptoc();
  365. #define    pass(x)    (*((long *)&(x)))
  366.  
  367. /* include/apple */
  368. #define    lapSize    20
  369. #define    ddpSize    26
  370. #define    nbpSize    26
  371. #define    atpSize    56
  372.  
  373. typedef short            ABCallType;
  374.  
  375. #define    tLAPRead        0
  376. #define    tLAPWrite        1
  377. #define    tDDPRead        2
  378. #define    tDDPWrite        3
  379. #define    tNBPLookup        4
  380. #define    tNBPConfirm        5
  381. #define    tNBPRegister    6
  382. #define    tATPSndRequest    7
  383. #define    tATPGetRequest    8
  384. #define    tATPSdRsp        9
  385. #define    tATPAddRsp        10
  386.  
  387. typedef short            ABProtoType;
  388.  
  389. #define    lapProto        0
  390. #define    ddpProto        1
  391. #define    nbpProto        2
  392. #define    atpProto        3
  393.  
  394. typedef unsigned char    ABByte;
  395. typedef String(32)        Str32;
  396.  
  397. typedef struct {
  398.     Byte            dstNodeId;
  399.     Byte            srcNodeId;
  400.     Byte            LAPProtType;
  401. } LAPAdrBlock;
  402.  
  403. typedef struct {
  404.     short            aNet;
  405.     Byte            aNode;
  406.     Byte            aSocket;
  407. } AddrBlock;
  408.  
  409. typedef struct {
  410.     Str32            objStr;
  411.     Str32            typeStr;
  412.     Str32            zoneStr;
  413. } EntityName, *EntityPtr;
  414.  
  415. typedef struct {
  416.     Byte            retransInterval;
  417.     Byte            retransCount;
  418. } RetransType;
  419.  
  420. typedef struct {
  421.     short            buffSize;
  422.     Ptr                buffPtr;
  423.     short            dataSize;
  424.     long            userBytes;
  425. } BDSElement;
  426. typedef BDSElement    BDSType[8];
  427. typedef BDSType *    BDSPtr;
  428.  
  429. typedef struct {
  430.     ABCallType        abOpcode;
  431.     short            abResult;
  432.     long            abUserReference;
  433.     LAPAdrBlock        lapAddress;
  434.     short            lapReqCount;
  435.     short            lapActCount;
  436.     Ptr                lapDataPtr;
  437. } LAPRecord, *LAPRecPtr, **LAPRecHdl;
  438.  
  439. typedef struct {
  440.     ABCallType        abOpcode;
  441.     short            abResult;
  442.     long            abUserReference;
  443.     Byte            ddpType;
  444.     Byte            ddpSocket;
  445.     AddrBlock        ddpAddress;
  446.     short            ddpReqCount;
  447.     short            ddpActCount;
  448.     Ptr                ddpDataPtr;
  449.     Byte            ddpNodeID;
  450. } DDPRecord, *DDPRecPtr, **DDPRecHdl;
  451.  
  452. typedef struct {
  453.     ABCallType        abOpcode;
  454.     short            abResult;
  455.     long            abUserReference;
  456.     EntityPtr        nbpEntityPtr;
  457.     Ptr                nbpBufPtr;
  458.     short            nbpBufSize;
  459.     short            nbpDataField;
  460.     AddrBlock        nbpAddress;
  461.     RetransType        nbpRetransmitInfo;
  462. } NBPRecord, *NBPRecPtr, **NBPRecHdl;
  463.  
  464. typedef struct {
  465.     ABCallType        abOpcode;
  466.     short            abResult;
  467.     long            abUserReference;
  468.     Byte            atpSocket;
  469.     AddrBlock        atpAddress;
  470.     short            atpReqCount;
  471.     Ptr                atpDataPtr;
  472.     BDSPtr            atpRspBDSPtr;
  473.     unsigned char    atpBitMap;
  474.     short            atpTransId;
  475.     short            atpActCount;
  476.     long            atpUserData;
  477.     Boolean            atpXO;
  478.     Boolean            atpEOM;
  479.     Byte            atpTimeOut;
  480.     Byte            atpRetries;
  481.     Byte            atpNumBufs;
  482.     Byte            atpNumRsp;
  483.     Byte            atpBDSSize;
  484. } ATPRecord, *ATPRecPtr, **ATPRecHdl;
  485.  
  486. pascal OSErr            MPPOpen();
  487. pascal OSErr            LAPOpenProtocol();
  488. pascal OSErr            LAPCloseProtocol();
  489. pascal OSErr            LAPRead();
  490. pascal OSErr            LAPWrite();
  491. pascal OSErr            DDPOpenSocket();
  492. pascal OSErr            DDPCloseSocket();
  493. pascal OSErr            DDPRead();
  494. pascal OSErr            DDPWrite();
  495. pascal OSErr            NBPLoad();
  496. pascal OSErr            NBPUnload();
  497. pascal OSErr            NBPLookup();
  498. pascal OSErr            NBPConfirm();
  499. pascal OSErr            NBPRegister();
  500. pascal OSErr            NBPRemove();
  501. pascal OSErr            NBPExtract();
  502. pascal OSErr            ATPLoad();
  503. pascal OSErr            ATPUnload();
  504. pascal OSErr            ATPOpenSocket();
  505. pascal OSErr            ATPCloseSocket();
  506. pascal OSErr            ATPSndRequest();
  507. pascal OSErr            ATPGetRequest();
  508. pascal OSErr            ATPSndRsp();
  509. pascal OSErr            ATPAddRsp();
  510. pascal void                RemoveHdlBlks();
  511. pascal Byte                GetNodeNumber();
  512.  
  513. /* include/toolutility */
  514.  
  515. #define sysPatListID    0
  516.  
  517. #define    iBeamCursor    1 
  518. #define    crossCursor    2 
  519. #define    plusCursor    3 
  520. #define    watchCursor    4 
  521.  
  522. typedef long                Fixed;
  523.  
  524. struct Int64Bit {
  525.     long    hiLong;
  526.     long    loLong;
  527. };
  528. typedef struct Int64Bit        Int64Bit;
  529.  
  530. typedef struct Cursor *        CursPtr;
  531. typedef struct Cursor **    CursHandle;
  532.  
  533. typedef struct Pattern *    PatPtr;
  534. typedef struct Pattern **    PatHandle;
  535.  
  536. pascal StringHandle            NewString()            =    0xa906;
  537. pascal void                    SetString()            =    0xa907;
  538. pascal StringHandle            GetString()            =    0xa9ba;
  539. pascal long                    Munger()            =    0xa9e0;
  540. pascal Fixed                FixRatio()            =    0xa869;
  541. pascal Fixed                FixMul()            =    0xa868;
  542. pascal short                FixRound()            =    0xa86c;
  543. pascal Boolean                BitTst()            =    0xa85d;
  544. pascal void                    BitSet()            =    0xa85e;
  545. pascal void                    BitClr()            =    0xa85f;
  546. pascal long                    BitAnd()            =    0xa858;
  547. pascal long                    BitOr()                =    0xa85b;
  548. pascal long                    BitXor()            =    0xa859;
  549. pascal long                    BitNot()            =    0xa85a;
  550. pascal long                    BitShift()            =    0xa85c;
  551. pascal short                HiWord()            =    0xa86a;
  552. pascal short                LoWord()            =    0xa86b;
  553. pascal void                    LongMul()            =    0xa867;
  554. pascal PicHandle            GetPicture()        =    0xa9bc;
  555. pascal void                    GetIndString();
  556. pascal void                    GetIndPattern();
  557. pascal long                    DeltaPoint()        =    0xa94f;
  558. pascal Fixed                SlopeFromAngle()    =    0xa8bc;
  559. pascal short                AngleFromSlope()    =    0xa8c4;
  560. pascal Handle                GetIcon()            =    0xa9bb;
  561. pascal void                    PlotIcon()            =    0xa94b;
  562. pascal PatHandle            GetPattern()        =    0xa9b8;
  563. pascal CursHandle            GetCursor()            =    0xa9b9;
  564. pascal void                    ShieldCursor()        =    0xa855;
  565. pascal void                    PackBits()            =    0xa8cf;
  566. pascal void                    UnpackBits()        =    0xa8d0;
  567.  
  568. /* include/window */
  569.  
  570.  
  571. #define    documentProc    0
  572. #define    dBoxProc        1
  573. #define    plainDBox        2
  574. #define    altDBoxProc        3
  575. #define    noGrowDocProc    4
  576. #define    rDocProc        16
  577.  
  578. #define    dialogKind        2
  579. #define    userKind        8
  580.  
  581. #define    inDesk            0
  582. #define    inMenuBar        1
  583. #define    inSysWindow        2
  584. #define    inContent        3
  585. #define    inDrag            4
  586. #define    inGrow            5
  587. #define    inGoAway        6
  588.  
  589. #define    noConstraint    0
  590. #define    hAxisOnly        1
  591. #define    vAxisOnly        2
  592.  
  593. #define    wDraw            0
  594. #define    wHit            1
  595. #define    wCalcRgns        2
  596. #define    wNew            3
  597. #define    wDispose        4
  598. #define    wGrow            5
  599. #define    wDrawGIcon        6
  600.  
  601. #define    wNoHit            0
  602. #define    wInContent        1
  603. #define    wInDrag            2
  604. #define    wInGrow            3
  605. #define    wInGoAway        4
  606.  
  607. typedef    struct WindowRecord *    WindowPeek;
  608.  
  609. struct WindowRecord {
  610.     GrafPort                port;
  611.     short                    windowKind;
  612.     char                    visible;
  613.     char                    hilited;
  614.     char                    goAwayFlag;
  615.     char                    spareFlag;
  616.     RgnHandle                strucRgn;
  617.     RgnHandle                contRgn;
  618.     RgnHandle                updateRgn;
  619.     Handle                    windowDefProc;
  620.     Handle                    dataHandle;
  621.     StringHandle            titleHandle;
  622.     short                    titleWidth;
  623.     Handle                    controlList;
  624.     WindowPeek                nextWindow;
  625.     PicHandle                windowPic;
  626.     long                    refCon;
  627. };
  628. typedef    struct WindowRecord    WindowRecord;
  629. typedef    GrafPtr                WindowPtr;
  630.  
  631. pascal void                        InitWindows()        =    0xa912;
  632. pascal void                        GetWMgrPort()        =    0xa910;
  633. pascal WindowPtr                NewWindow()            =    0xa913;
  634. pascal WindowPtr                GetNewWindow()        =    0xa9bd;
  635. pascal void                        CloseWindow()        =    0xa92d;
  636. pascal void                        DisposeWindow()        =    0xa914;
  637. pascal void                        SetWTitle()            =    0xa91a;
  638. pascal void                        GetWTitle()            =    0xa919;
  639. pascal void                        SelectWindow()        =    0xa91f;
  640. pascal void                        HideWindow()        =    0xa916;
  641. pascal void                        ShowWindow()        =    0xa915;
  642. pascal void                        ShowHide()            =    0xa908;
  643. pascal void                        HiliteWindow()        =    0xa91c;
  644. pascal void                        BringToFront()        =    0xa920;
  645. pascal void                        SendBehind()        =    0xa921;
  646. pascal WindowPtr                FrontWindow()        =    0xa924;
  647. pascal void                        DrawGrowIcon()        =    0xa904;
  648. pascal short                    FindWindow()        =    0xa92c;
  649. pascal Boolean                    TrackGoAway()        =    0xa91e;
  650. pascal void                        MoveWindow()        =    0xa91b;
  651. pascal void                        DragWindow()        =    0xa925;
  652. pascal long                        GrowWindow()        =    0xa92b;
  653. pascal void                        SizeWindow()        =    0xa91d;
  654. pascal void                        InvalRect()            =    0xa928;
  655. pascal void                        InvalRgn()            =    0xa927;
  656. pascal void                        ValidRect()            =    0xa92a;
  657. pascal void                        ValidRgn()            =    0xa929;
  658. pascal void                        BeginUpdate()        =    0xa922;
  659. pascal void                        EndUpdate()            =    0xa923;
  660. pascal void                        SetWRefCon()        =    0xa918;
  661. pascal long                        GetWRefCon()        =    0xa917;
  662. pascal void                        SetWindowPic()        =    0xa92e;
  663. pascal PicHandle                GetWindowPic()        =    0xa92f;
  664. pascal long                        PinRect()            =    0xa94e;
  665. pascal long                        DragGrayRgn()        =    0xa905;
  666. pascal Boolean                    CheckUpdate()        =    0xa911;
  667. pascal void                        ClipAbove()            =    0xa90b;
  668. pascal void                        SaveOld()            =    0xa90e;
  669. pascal void                        DrawNew()            =    0xa90f;
  670. pascal void                        PaintOne()            =    0xa90c;
  671. pascal void                        PaintBehind()        =    0xa90d;
  672. pascal void                        CalcVis()            =    0xa909;
  673. pascal void                        CalcVisBehind()        =    0xa90a;
  674.  
  675. /* include/control */
  676. #define    pushButProc        0
  677. #define    checkBoxProc    1
  678. #define    radioButProc    2
  679. #define    useWFont        8
  680. #define    scrollBarProc    16
  681.  
  682. #define    inButton        10
  683. #define    inCheckBox        11
  684. #define    inUpButton        20
  685. #define    inDownButton    21
  686. #define    inPageUp        22
  687. #define    inPageDown        23
  688. #define    inThumb            129
  689.  
  690. #define    drawCntl        0
  691. #define    testCntl        1
  692. #define    calcCRgns        2
  693. #define    initCntl        3
  694. #define    dispCntl        4
  695. #define    posCntl            5
  696. #define    thumbCntl        6
  697. #define    dragCntl        7
  698. #define    autoTrack        8
  699.  
  700. typedef    struct ControlRecord **        ControlHandle;
  701.  
  702. struct ControlRecord {
  703.     ControlHandle            nextControl;
  704.     WindowPtr                contrlOwner;
  705.     Rect                    contrlRect;
  706.     char                    contrlVis;
  707.     char                    contrlHilite;
  708.     short                    contrlValue;
  709.     short                    contrlMin;
  710.     short                    contrlMax;
  711.     Handle                    contrlProc;
  712.     Handle                    contrlData;
  713.     ProcPtr                    contrlAction;
  714.     long                    contrlRfCon;
  715.     Str255                    contrlTitle;
  716. };
  717. typedef struct ControlRecord        ControlRecord;
  718. typedef    struct ControlRecord *        ControlPtr;
  719.  
  720.  
  721. pascal ControlHandle            NewControl()        =    0xa954;
  722. pascal ControlHandle            GetNewControl()        =    0xa9be;
  723. pascal void                        DisposeControl()    =    0xa955;
  724. pascal void                        KillControls()        =    0xa956;
  725. pascal void                        SetCTitle()            =    0xa95f;
  726. pascal void                        GetCTitle()            =    0xa95e;
  727. pascal void                        HideControl()        =    0xa958;
  728. pascal void                        ShowControl()        =    0xa957;
  729. pascal void                        DrawControls()        =    0xa969;
  730. pascal void                        HiliteControl()        =    0xa95d;
  731. pascal short                    TestControl()        =    0xa966;
  732. pascal short                    FindControl()        =    0xa96c;
  733. pascal short                    TrackControl()        =    0xa968;
  734. pascal void                        MoveControl()        =    0xa959;
  735. pascal void                        DragControl()        =    0xa967;
  736. pascal void                        SizeControl()        =    0xa95c;
  737. pascal void                        SetCtlValue()        =    0xa963;
  738. pascal short                    GetCtlValue()        =    0xa960;
  739. pascal void                        SetCtlMin()            =    0xa964;
  740. pascal short                    GetCtlMin()            =    0xa961;
  741. pascal void                        SetCtlMax()            =    0xa965;
  742. pascal short                    GetCtlMax()            =    0xa962;
  743. pascal void                        SetCRefCon()        =    0xa95b;
  744. pascal long                        GetCRefCon()        =    0xa95a;
  745. pascal void                        SetCtlAction()        =    0xa96b;
  746. pascal ProcPtr                    GetCtlAction()        =    0xa96a;
  747.  
  748. /* include/ctypes */
  749. extern char ctp_[];
  750.  
  751. #define isalpha(x) (ctp_[(x)+1]&0x03)
  752. #define isupper(x) (ctp_[(x)+1]&0x01)
  753. #define islower(x) (ctp_[(x)+1]&0x02)
  754. #define isdigit(x) (ctp_[(x)+1]&0x04)
  755. #define isxdigit(x) (ctp_[(x)+1]&0x08)
  756. #define isalnum(x) (ctp_[(x)+1]&0x07)
  757. #define isspace(x) (ctp_[(x)+1]&0x10)
  758. #define ispunct(x) (ctp_[(x)+1]&0x40)
  759. #define iscntrl(x) (ctp_[(x)+1]&0x20)
  760. #define isprint(x) (ctp_[(x)+1]&0xc7)
  761. #define isgraph(x) (ctp_[(x)+1]&0x47)
  762. #define isascii(x) (((x)&0x80)==0)
  763.  
  764. #define toascii(x) ((x)&127)
  765. #define _tolower(x) ((x)|0x20)
  766. #define _toupper(x) ((x)&0x5f)
  767.  
  768. /* include/deskutility */
  769.  
  770. #define    undoCmd        0
  771. #define    cutCmd        2
  772. #define    copyCmd        3
  773. #define    pasteCmd    4
  774. #define    clearCmd    5
  775.  
  776. #define    accEvent    64
  777. #define    accRun        65
  778. #define    accCursor    66
  779. #define    accMenu        67
  780. #define    accUndo        68
  781. #define    accCut        70
  782. #define    accCopy        71
  783. #define    accPaste    72
  784. #define    accClear    73
  785.  
  786. struct DCE {
  787.     char **                    dCtlDriver;
  788.     unsigned short            dCtlFlags;
  789.     short                    dCtlQueue;
  790.     struct ParamBlkRec *    dCtlQHead;
  791.     struct ParamBlkRec *    dCtlQTail;
  792.     long                    dCtlPosition;
  793.     char **                    dCtlStorage;
  794.     short                    dCtlRefNum;
  795.     long                    dCtlCurTicks;
  796.     WindowPtr                dCtlWindow;
  797.     short                    dCtlDelay;
  798.     unsigned short            dCtlEMask;
  799.     short                    dCtlMenu;
  800. };
  801. typedef struct DCE        DCE;
  802. typedef struct DCE *    DCEPtr;
  803.  
  804. pascal short    OpenDeskAcc()            =    0xa9b6;
  805. pascal void        CloseDeskAcc()            =    0xa9b7;
  806. pascal void        SystemClick()            =    0xa9b3;
  807. pascal Boolean    SystemEdit()            =    0xa9c2;
  808. pascal void        SystemTask()            =    0xa9b4;
  809. pascal Boolean    SystemEvent()            =    0xa9b2;
  810. pascal void        SystemMenu()            =    0xa9b5;
  811.  
  812. /* include/textedit */
  813. #define    teJustLeft        0
  814. #define    teJustCenter    1
  815. #define    teJustRight        -1
  816.  
  817. typedef    char        Chars[32001];
  818. typedef char *        CharsPtr;
  819. typedef char **        CharsHandle;
  820.  
  821. struct TERec {
  822.     Rect                destRect;
  823.     Rect                viewRect;
  824.     Rect                selRect;
  825.     short                lineHeight;
  826.     short                fontAscent;
  827.     Point                selPoint;
  828.     short                selStart;
  829.     short                selEnd;
  830.     short                active;
  831.     long                wordBreak;
  832.     long                clikLoop;
  833.     long                clickTime;
  834.     short                clickLoc;
  835.     long                caretTime;
  836.     short                caretState;
  837.     short                just;
  838.     short                teLength;
  839.     Handle                hText;
  840.     short                recalBack;
  841.     short                recalLines;
  842.     short                clikStuff;
  843.     short                crOnly;
  844.     short                txFont;
  845.     short                txFace;
  846.     short                txMode;
  847.     short                txSize;
  848.     GrafPtr                inPort;
  849.     Ptr                    highHook;
  850.     Ptr                    caretHook;
  851.     short                nLines;
  852.     short                lineStarts[32001];
  853. };
  854. typedef struct TERec        TERec;
  855. typedef struct TERec *        TEPtr;
  856. typedef struct TERec **        TEHandle;
  857.  
  858. pascal void                    TEInit()            =    0xa9cc;
  859. pascal TEHandle                TENew()                =    0xa9d2;
  860. pascal void                    TESetText()            =    0xa9cf;
  861. pascal CharsHandle            TEGetText()            =    0xa9cb;
  862. pascal void                    TEDispose()            =    0xa9cd;
  863. pascal void                    TEKey()                =    0xa9dc;
  864. pascal void                    TECut()                =    0xa9d6;
  865. pascal void                    TECopy()            =    0xa9d5;
  866. pascal void                    TEPaste()            =    0xa9db;
  867. pascal void                    TEDelete()            =    0xa9d7;
  868. pascal void                    TEInsert()            =    0xa9de;
  869. pascal void                    TESetSelect()        =    0xa9d1;
  870. pascal void                    TESetJust()            =    0xa9df;
  871. pascal void                    TEClick()            =    0xa9d4;
  872. pascal void                    TEIdle()            =    0xa9da;
  873. pascal void                    TEActivate()        =    0xa9d8;
  874. pascal void                    TEDeactivate()        =    0xa9d9;
  875. pascal void                    TEUpdate()            =    0xa9d3;
  876. pascal void                    TextBox()            =    0xa9ce;
  877. pascal void                    TEScroll()            =    0xa9dd;
  878. pascal void                    TECalText()            =    0xa9d0;
  879. pascal OSErr                TEFromScrap();
  880. pascal OSErr                TEToScrap();
  881.        Handle                TEScrapHndl();
  882.        long                    TEGetScrpLen();
  883. pascal void                    TESetScrpLen();
  884.  
  885. /* include/dialog */
  886. #define    ctrlItem    0x04
  887. #define    btnCtrl        0x00
  888. #define    chkCtrl        0x01
  889. #define    radCtrl        0x02
  890. #define    resCtrl        0x03
  891. #define    statText    0x08
  892. #define    editText    0x10
  893. #define    iconItem    0x20
  894. #define    picItem        0x40
  895. #define    userItem    0x00
  896. #define    itemDisable    0x80
  897.  
  898. #define    OK            1
  899. #define    Cancel        2
  900.  
  901. #define    stopIcon    0
  902. #define    noteIcon    1
  903. #define    ctnIcon        2
  904.  
  905. struct DialogRecord {
  906.     WindowRecord        window;
  907.     Handle                items;
  908.     TEHandle            textH;
  909.     short                editField;
  910.     short                editOpen;
  911.     short                aDefItem;
  912. };
  913. typedef struct DialogRecord        DialogRecord;
  914. typedef struct DialogRecord *    DialogPeek;
  915. typedef WindowPtr                DialogPtr;
  916.  
  917. struct DialogTemplate {
  918.     Rect        boundsRect;
  919.     short        procID;
  920.     char        visible;
  921.     char        filler1;
  922.     char        goAwayFlag;
  923.     char        filler2;
  924.     long        refCon;
  925.     short        itemsID;
  926.     Str255        title;
  927. };
  928. typedef struct DialogTemplate        DialogTemplate;
  929. typedef struct DialogTemplate *        DialogTPtr;
  930. typedef struct DialogTemplate **    DialogTHandle;
  931.  
  932. struct StageList {
  933.     char        boldItem;
  934.     char        boxDrawn;
  935.     char        sound;
  936. };
  937. typedef struct StageList    StageList[4];
  938.  
  939. struct AlertTemplate {
  940.     Rect             boundsRect;
  941.     short            itemsID;
  942.     StageList        stages;
  943. };
  944.  
  945. #define    volBits        0x3
  946. #define    alBit        0x4
  947. #define    OKDismissal    0x8
  948.  
  949. pascal void                        InitDialogs()        =    0xa97b;
  950. pascal void                        ErrorSound()        =    0xa98c;
  951. pascal DialogPtr                NewDialog()            =    0xa97d;
  952. pascal DialogPtr                GetNewDialog()        =    0xa97c;
  953. pascal void                        CloseDialog()        =    0xa982;
  954. pascal void                        DisposDialog()        =    0xa983;
  955. pascal void                        CouldDialog()        =    0xa979;
  956. pascal void                        FreeDialog()        =    0xa97a;
  957. pascal void                        ModalDialog()        =    0xa991;
  958. pascal Boolean                    IsDialogEvent()        =    0xa97f;
  959. pascal Boolean                    DialogSelect()        =    0xa980;
  960. pascal void                        DrawDialog()        =    0xa981;
  961. pascal short                    Alert()                =    0xa985;
  962. pascal short                    StopAlert()            =    0xa986;
  963. pascal short                    NoteAlert()            =    0xa987;
  964. pascal short                    CautionAlert()        =    0xa988;
  965. pascal void                        CouldAlert()        =    0xa989;
  966. pascal void                        FreeAlert()            =    0xa98a;
  967. pascal void                        ParamText()            =    0xa98b;
  968. pascal void                        GetDItem()            =    0xa98d;
  969. pascal void                        SetDItem()            =    0xa98e;
  970. pascal void                        GetIText()            =    0xa990;
  971. pascal void                        SetIText()            =    0xa98f;
  972. pascal void                        SelIText()            =    0xa97e;
  973.        short                    GetAlrtStage();
  974.        void                        ResetAlrtStage();
  975. pascal void                        DlgCopy();
  976. pascal void                        DlgCut();
  977. pascal void                        DlgPaste();
  978. pascal void                        DlgDelete();
  979. pascal void                        SetDAFont();
  980.  
  981. /* include/osutil */
  982. struct SysParamType {
  983.     long        valid;
  984.     short        portA;
  985.     short        portB;
  986.     long        alarm;
  987.     short        font;
  988.     short        kbdPrint;
  989.     short        volClick;
  990.     short        misc;
  991. };
  992. typedef struct SysParamType        SysParamType;
  993. typedef struct SysParamType *    SysPtr;
  994.  
  995. #define    vType        1
  996. #define    ioQType        2
  997. #define    drvQType    3
  998. #define    evType        4
  999. #define    fsQType        5
  1000.  
  1001. typedef struct QElem {
  1002.     struct QElem *    qLink; 
  1003.     short            qType; 
  1004.     short            qData[1]; 
  1005. } QElem, *QElemPtr;
  1006.  
  1007. typedef struct {
  1008.     short        qFlags; 
  1009.     QElemPtr    qHead; 
  1010.     QElemPtr    qTail; 
  1011. } QHdr, *QHdrPtr;
  1012.  
  1013. struct DateTimeRec {
  1014.     short    year;
  1015.     short    month;
  1016.     short    day;
  1017.     short    hour;
  1018.     short    minute;
  1019.     short    second;
  1020.     short    dayOfWeek;
  1021. };
  1022. typedef struct DateTimeRec    DateTimeRec;
  1023.  
  1024.        OSErr    HandToHand();
  1025.        OSErr    PtrToHand();
  1026.        OSErr    PtrToXHand();
  1027.        OSErr    HandAndHand();
  1028.        OSErr    PtrAndHand();
  1029.        Boolean    EqualString();
  1030.        void        UprString();
  1031.        OSErr    ReadDateTime();
  1032.        void        GetDateTime();
  1033.        OSErr    SetDateTime();
  1034.        void        Date2Secs();
  1035.        void        Secs2Date();
  1036.        void        GetTime();
  1037.        void        SetTime();
  1038.        OSErr    InitUtil();
  1039.        SysPtr    GetSysPPtr();
  1040.        OSErr    WriteParam();
  1041.        void        Enqueue();
  1042.        OSErr    Dequeue();
  1043.        void        SysError();
  1044.        void        Delay();
  1045.        void        SetTrapAddress();
  1046.        QHdrPtr    GetEvQHdr();
  1047.        long        GetTrapAddress();
  1048. pascal void        SysBeep()                    =    0xa9c8;
  1049.  
  1050. /* include/disk */
  1051.  
  1052. #define    currPos        0x00
  1053. #define    absPos        0x01
  1054. #define relPos        0x03
  1055. #define rdVerify    0x40
  1056.  
  1057. struct DrvSts {
  1058.     short        track;
  1059.     SignedByte    writeProt;
  1060.     SignedByte    diskInPlace;
  1061.     SignedByte    installed;
  1062.     SignedByte    sides;
  1063.     QElemPtr    qLink;
  1064.     short        qType;
  1065.     short        dQDrive;
  1066.     short        dQRefNUm;
  1067.     short        dQFSID;
  1068.     SignedByte    twoSideFmt;
  1069.     SignedByte    needsFlush;
  1070.     short        diskErrs;
  1071. };
  1072.  
  1073.     OSErr    DiskEject();
  1074.     OSErr    SetTagBuffer();
  1075.     OSErr    DriveStatus();
  1076.  
  1077. /* include/errno */
  1078.  
  1079. extern int errno;
  1080. #define ENOENT    -1
  1081. #define E2BIG    -2
  1082. #define EBADF    -3
  1083. #define ENOMEM    -4
  1084. #define EEXIST    -5
  1085. #define EINVAL    -6
  1086. #define ENFILE    -7
  1087. #define EMFILE    -8
  1088. #define ENOTTY    -9
  1089. #define EACCES    -10
  1090.  
  1091. #define ERANGE    -20
  1092. #define EDOM    -21
  1093.  
  1094. /* include/event */
  1095.  
  1096. #define    nullEvent    0
  1097. #define    mouseDown    1
  1098. #define    mouseUp        2
  1099. #define    keyDown        3
  1100. #define    keyUp        4
  1101. #define    autoKey        5
  1102. #define    updateEvt    6
  1103. #define    diskEvt        7
  1104. #define    activateEvt    8
  1105. #define    abortEvt    9
  1106. #define    networkEvt    10
  1107. #define    driverEvt    11
  1108. #define    app1Evt        12
  1109. #define    app2Evt        13
  1110. #define    app3Evt        14
  1111. #define    app4Evt        15
  1112.  
  1113. #define    everyEvent    0xffff
  1114.  
  1115. #define    nullMask    0x0001
  1116. #define    mDownMask    0x0002
  1117. #define    mUpMask        0x0004
  1118. #define    keyDownMask    0x0008
  1119. #define    keyUpMask    0x0010
  1120. #define    autoKeyMask    0x0020
  1121. #define    updateMask    0x0040
  1122. #define    diskMask    0x0080
  1123. #define    activMask    0x0100
  1124. #define    abortMask    0x0200
  1125. #define    networkMask    0x0400
  1126. #define    driverMask    0x0800
  1127. #define    app1Mask    0x1000
  1128. #define    app2Mask    0x2000
  1129. #define    app3Mask    0x4000
  1130. #define    app4Mask    0x8000
  1131.  
  1132. #define    charCodeMask    0x000000ff
  1133. #define    keyCodeMask        0x0000ff00
  1134.  
  1135. #define    activeFlag        0x0001
  1136.  
  1137. #define    optionKey        0x0800
  1138. #define    alphaLock        0x0400
  1139. #define    shiftKey        0x0200
  1140. #define    cmdKey            0x0100
  1141. #define    btnState        0x0080
  1142.  
  1143. #define evtNotEnb    1
  1144.  
  1145. struct EventRecord {
  1146.     short            what;
  1147.     long            message;
  1148.     long            when;
  1149.     Point            where;
  1150.     short            modifiers;
  1151. };
  1152. typedef struct EventRecord    EventRecord;
  1153.  
  1154. typedef    long        KeyMap[4];
  1155.  
  1156.  
  1157. pascal Boolean        GetNextEvent()        =    0xa970;
  1158. pascal Boolean        EventAvail()        =    0xa971;
  1159. pascal void            GetMouse()            =    0xa972;
  1160. pascal Boolean        Button()            =    0xa974;
  1161. pascal Boolean        StillDown()            =    0xa973;
  1162. pascal Boolean        WaitMouseUp()        =    0xa977;
  1163. pascal void            GetKeys()            =    0xa976;
  1164. pascal long            TickCount()            =    0xa975;
  1165.  
  1166.        void            PostEvent();
  1167.        void            FlushEvents();
  1168.        void            SetEventMask();
  1169.        Boolean        OSEventAvail();
  1170.        Boolean        GetOSEvent();
  1171.        long            GetDbleTime();
  1172.        long            GetCaretTime();
  1173.        
  1174. /* include/fcntl */
  1175. #define O_RDONLY    0
  1176. #define O_WRONLY    1
  1177. #define O_RDWR        2
  1178. #define O_CREAT        0x0100
  1179. #define O_TRUNC        0x0200
  1180. #define O_EXCL        0x0400
  1181. #define O_APPEND    0x0800
  1182.  
  1183. /* include/fonts */
  1184. /*    Font Numbers    */
  1185.  
  1186. #define    systemFont    0
  1187. #define    applFont    1
  1188. #define    newYork        2
  1189. #define    geneva        3
  1190. #define    monaco        4
  1191. #define    venice        5
  1192. #define    london        6
  1193. #define    athens        7
  1194. #define    sanFran        8
  1195. #define    toronto        9
  1196.  
  1197. /* Font Types        */
  1198.  
  1199. #define    propFont    0x9000
  1200. #define    fixedFont    0xB000
  1201. #define    fontWid        0xACB0
  1202.  
  1203. /* Data Types        */
  1204.  
  1205. struct FMInput {
  1206.     short            family;
  1207.     short            size;
  1208.     char            face;
  1209.     char            needBits;
  1210.     short            device;
  1211.     Point            numer;
  1212.     Point            denom;
  1213. };
  1214. typedef struct FMInput        FMInput;
  1215.  
  1216. struct FMOutput {
  1217.     short            errNum;
  1218.     Handle            fontHandle;
  1219.     Byte            bold;
  1220.     Byte            italic;
  1221.     Byte            ulOffset;
  1222.     Byte            ulShadow;
  1223.     Byte            ulThick;
  1224.     Byte            shadow;
  1225.     SignedByte        extra;
  1226.     Byte            ascent;
  1227.     Byte            descent;
  1228.     Byte            widMax;
  1229.     SignedByte        leading;
  1230.     Byte            unused;
  1231.     Point            numer;
  1232.     Point            denom;
  1233. };
  1234. typedef struct FMOutput        FMOutput;
  1235. typedef    struct FMOutput *    FMOutPtr;
  1236.  
  1237. struct FontRec {
  1238.     short    fontType;
  1239.     short    firstChar;
  1240.     short    lastChar;
  1241.     short    widMax;
  1242.     short    kernMax;
  1243.     short    nDescent;
  1244.     short    fRectMax;
  1245.     short    chHeight;
  1246.     short    owTLoc;
  1247.     short    ascent;
  1248.     short    descent;
  1249.     short    leading;
  1250.     short    rowWords;
  1251. };
  1252. typedef struct FontRec        FontRec;
  1253. pascal void                    InitFonts()            =    0xa8fe;
  1254. pascal void                    GetFontName()        =    0xa8ff;
  1255. pascal void                    GetFNum()            =    0xa900;
  1256. pascal Boolean                RealFont()            =    0xa902;
  1257. pascal void                    SetFontLock()        =    0xa903;
  1258. pascal FMOutPtr                SwapFont()            =    0xa901;
  1259.  
  1260. /* include/inits */
  1261. pascal void                    InitGraf()            =    0xa86e;
  1262. pascal void                    InitDialogs()        =    0xa97b;
  1263. pascal void                    InitFonts()            =    0xa8fe;
  1264. pascal void                 InitMenus()            =    0xa930;
  1265. pascal void                    InitPack()            =    0xa9e5;
  1266. pascal void                    InitAllPacks()        =    0xa9e6;
  1267. pascal void                    InitQueue();
  1268. pascal short                InitResources()        =    0xa995;
  1269. pascal void                    TEInit()            =    0xa9cc;
  1270. pascal void                    InitWindows()        =    0xa912;
  1271. pascal void                    InitPort()            =    0xa86d;
  1272. pascal void                    InitCursor()        =    0xa850;
  1273.  
  1274. /* include/math */
  1275. double sin(), cos(), tan(), cotan();
  1276. double asin(), acos(), atan(), atan2();
  1277. double ldexp(), frexp(), modf();
  1278. double floor(), ceil(), fabs();
  1279. double log(), log10(), exp(), sqrt(), pow();
  1280. double sinh(), cosh(), tanh();
  1281.  
  1282. #define HUGE    1.79e+308
  1283. #define LOGHUGE    709.778
  1284. #define TINY    2.2e-308
  1285. #define LOGTINY    -708.396
  1286.  
  1287. /* include/memory */
  1288. /* Copyright (C) 1984 by Manx Software Systems, Inc. */
  1289.  
  1290. #define    maxSize            0x800000
  1291.  
  1292. typedef    long            Size;
  1293. typedef    int                MemErr;
  1294. typedef    struct Zone *    THz;
  1295.  
  1296. struct Zone {
  1297.     Ptr            bkLim;
  1298.     Ptr            purgePtr;
  1299.     Ptr            hFstFree;
  1300.     long        zcbFree;
  1301.     ProcPtr        gzProc;
  1302.     short        moreMast;
  1303.     short        flags;
  1304.     short        cntRel;
  1305.     short        maxRel;
  1306.     short        cntNRel;
  1307.     short        maxNRel;
  1308.     short        cntEmpty;
  1309.     short        cntHandles;
  1310.     long        minCBFree;
  1311.     ProcPtr        purgeProc;
  1312.     Ptr            sparePtr;
  1313.     Ptr            allocPtr;
  1314.     short        heapData;
  1315. };
  1316. typedef struct Zone        Zone;
  1317.  
  1318.        void                SetApplBase();
  1319.        void                InitApplZone();
  1320.        void                SetApplLimit();
  1321.        void                MaxApplZone();
  1322.        void                SetZone();
  1323.        void                DisposHandle();
  1324.        void                SetHandleSize();
  1325.        void                ReallocHandle();
  1326.        void                DisposPtr();
  1327.        void                SetPtrSize();
  1328.        void                ResrvMem();
  1329.        void                PurgeMem();
  1330.        void                EmptyHandle();
  1331.        void                HLock();
  1332.        void                HUnlock();
  1333.        void                HPurge();
  1334.        void                HNoPurge();
  1335.        void                MoreMasters();
  1336.        void                SetGrowZone();
  1337.        Boolean            GZCritical();
  1338.        void                BlockMove();
  1339.        MemErr            MemError();
  1340. pascal void                InitZone();
  1341.        THz                GetZone();
  1342.        THz                SystemZone();
  1343.        THz                ApplicZone();
  1344.        Handle            NewHandle();
  1345.        Size                GetHandleSize();
  1346.        THz                HandleZone();
  1347.        Handle            RecoverHandle();
  1348.        Ptr                NewPtr();
  1349.        Size                GetPtrSize();
  1350.        THz                PtrZone();
  1351.        long                FreeMem();
  1352.        Size                MaxMem();
  1353.        Size                CompactMem();
  1354.        Handle            GZSaveHnd();
  1355.        Ptr                TopMem();
  1356.  
  1357. /* include/menu */
  1358. #define    noMark            0
  1359. #define    commandMark        17
  1360. #define    checkMark        18
  1361. #define    diamondMark        19
  1362. #define    appleMark        20
  1363.  
  1364. #define    mDrawMsg        0
  1365. #define    mChooseMsg        1
  1366. #define    mSizeMsg        2
  1367.  
  1368. #define    textMenuProc    0
  1369.  
  1370. struct MenuInfo {
  1371.     short            menuID;
  1372.     short            menuWidth;
  1373.     short            menuHeight;
  1374.     Handle            menuProc;
  1375.     unsigned long    enableFlags;
  1376.     Str255            menuData;
  1377. };
  1378. typedef struct MenuInfo        MenuInfo;
  1379. typedef struct MenuInfo *    MenuPtr;
  1380. typedef struct MenuInfo **    MenuHandle;
  1381.  
  1382. pascal void                 InitMenus()            =    0xa930;
  1383. pascal MenuHandle            NewMenu()            =    0xa931;
  1384. pascal MenuHandle            GetMenu()            =    0xa9bf;
  1385. pascal void                 DisposeMenu()        =    0xa932;
  1386. pascal void                 AppendMenu()        =    0xa933;
  1387. pascal void                 AddResMenu()        =    0xa94d;
  1388. pascal void                 InsertResMenu()        =    0xa951;
  1389. pascal void                 InsertMenu()        =    0xa935;
  1390. pascal void                 DrawMenuBar()        =    0xa937;
  1391. pascal void                 DeleteMenu()        =    0xa936;
  1392. pascal void                 ClearMenuBar()        =    0xa934;
  1393. pascal Handle                GetNewMBar()        =    0xa9c0;
  1394. pascal Handle                GetMenuBar()        =    0xa93b;
  1395. pascal void                 SetMenuBar()        =    0xa93c;
  1396. pascal long                 MenuSelect()        =    0xa93d;
  1397. pascal long                 MenuKey()            =    0xa93e;
  1398. pascal void                 HiliteMenu()        =    0xa938;
  1399. pascal void                 SetItem()            =    0xa947;
  1400. pascal void                 GetItem()            =    0xa946;
  1401. pascal void                 DisableItem()        =    0xa93a;
  1402. pascal void                 EnableItem()        =    0xa939;
  1403. pascal void                 CheckItem()            =    0xa945;
  1404. pascal void                 SetItemIcon()        =    0xa940;
  1405. pascal void                 GetItemIcon()        =    0xa93f;
  1406. pascal void                 SetItemStyle()        =    0xa942;
  1407. pascal void                 GetItemStyle()        =    0xa941;
  1408. pascal void                 SetItemMark()        =    0xa944;
  1409. pascal void                 GetItemMark()        =    0xa943;
  1410. pascal void                 SetMenuFlash()        =    0xa94a;
  1411. pascal void                 CalcMenuSize()        =    0xa948;
  1412. pascal short                 CountMItems()        =    0xa950;
  1413. pascal MenuHandle            GetMHandle()        =    0xa949;
  1414. pascal void                 FlashMenuBar()        =    0xa94c;
  1415.  
  1416. /* include/packages */
  1417. #define    dskInit        2
  1418. #define    stdFile        3
  1419. #define    flPoint        4
  1420. #define    trFunc        5
  1421. #define    intUtil        6
  1422. #define    bdConv        7
  1423.  
  1424. pascal void        InitPack()            =    0xa9e5;
  1425. pascal void        InitAllPacks()        =    0xa9e6;
  1426. pascal void        Pack0()                =    0xa9e7;
  1427. pascal void        Pack1()                =    0xa9e8;
  1428. pascal void        Pack2()                =    0xa9e9;
  1429. pascal void        Pack3()                =    0xa9ea;
  1430. pascal void        Pack4()                =    0xa9eb;
  1431. pascal void        FP68K()                =    0xa9eb;
  1432. pascal void        Pack5()                =    0xa9ec;
  1433. pascal void        Pack6()                =    0xa9ed;
  1434. pascal void        Pack7()                =    0xa9ee;
  1435.  
  1436. /* Standard File Package */
  1437.  
  1438. #define    putDlgID        -3999
  1439.  
  1440. #define putSave        1
  1441. #define    putCancel    2
  1442. #define    putEject    5
  1443. #define    putDrive    6
  1444. #define    putName        7
  1445.  
  1446. #define    getDlgID        -4000
  1447.  
  1448. #define    getOpen        1
  1449. #define    getCancel    3
  1450. #define    getEject    5
  1451. #define    getDrive    6
  1452. #define    getNmList    7
  1453. #define    getScroll    8
  1454.  
  1455. struct SFReply {
  1456.     char    good;
  1457.     char    copy;
  1458.     OSType    fType;
  1459.     short    vRefNum;
  1460.     short    version;
  1461.     char    fName[64];
  1462. };
  1463. typedef struct SFReply    SFReply;
  1464.  
  1465. typedef OSType             SFTypeList[4];
  1466. typedef SFTypeList *    SFListPtr;
  1467.  
  1468. pascal void        SFPutFile();
  1469. pascal void        SFPPutFile();
  1470. pascal void        SFGetFile();
  1471. pascal void        SFPGetFile();
  1472.  
  1473. pascal void        DILoad();
  1474. pascal void        DIUnload();
  1475. pascal short    DIBadMount();
  1476. pascal short    DIFormat();
  1477. pascal short    DIVerify();
  1478. pascal short    DIZero();
  1479.  
  1480. /* International Utilities Package */
  1481.  
  1482. #define    shortDate    0x000
  1483. #define    longDate    0x100
  1484. #define    abbrevDate    0x200
  1485.  
  1486. #define currSymLead        0x10
  1487. #define currNegSym        0x20
  1488. #define currTrailingZ    0x40
  1489. #define currLeadingZ    0x80
  1490.  
  1491. #define mdy    0
  1492. #define dmy    1
  1493. #define ymd    2
  1494.  
  1495. #define dayLdingZ        0x20
  1496. #define mntLdingZ        0x40
  1497. #define century            0x80
  1498.  
  1499. #define secLeadingZ        0x20
  1500. #define minLeadingZ        0x40
  1501. #define hrLeadingZ        0x80
  1502.  
  1503. #define verUS        0
  1504. #define verFrance    1
  1505. #define verBritain    2
  1506. #define verGermany    3
  1507. #define verItaly    4
  1508.  
  1509. typedef struct {
  1510.     char    decimalPt;
  1511.     char     thousSep;
  1512.     char    listSep;
  1513.     char    currSym1;
  1514.     char     currSym2;
  1515.     char    currSym3;
  1516.     Byte    currFmt;
  1517.     Byte    dateOrder;
  1518.     Byte    shrtDateFmt;
  1519.     char    dateSep;
  1520.     Byte    timeCycle;
  1521.     Byte    timeFmt;
  1522.     char    mornStr[4];
  1523.     char    eveStr[4];
  1524.     char    timeSep;
  1525.     char    time1Suff;
  1526.     char    time2Suff;
  1527.     char    time3Suff;
  1528.     char    time4Suff;
  1529.     char    time5Suff;
  1530.     char    time6Suff;
  1531.     char    time7Suff;
  1532.     char    time8Suff;
  1533.     Byte    metricSys;
  1534.     short    intl0Vers;
  1535. } Intl0Rec, *Intl0Ptr, **Intl0Hndl;
  1536.  
  1537. typedef struct {
  1538.     char    days[7][16];
  1539.     char    months[12][16];
  1540.     Byte    suppressDay;
  1541.     Byte    lngDateFmt;
  1542.     Byte    dayLeading0;
  1543.     Byte    abbrLen;
  1544.     char    st0[4];
  1545.     char    st1[4];
  1546.     char    st2[4];
  1547.     char    st3[4];
  1548.     char    st4[4];
  1549.     short    intl1vers;
  1550.     short    localRtn;
  1551. } Intl1Rec, *Intl1Ptr, **Intl1Hndl;
  1552.  
  1553. pascal Handle    IUGetIntl();
  1554. pascal void        IUSetIntl();
  1555. pascal void        IUDateString();
  1556. pascal void        IUDatePString();
  1557. pascal void        IUTimeString();
  1558. pascal void        IUTimePString();
  1559. pascal Boolean    IUMetric();
  1560. pascal short    IUMagString();
  1561. pascal short    IUMagIDString();
  1562. pascal short    IUCompString();
  1563. pascal short    IUEqualString();
  1564. pascal void        StringToNum();
  1565. pascal void        NumToString();
  1566.  
  1567. /* include/pb */
  1568.  
  1569. #define    fHasBundle    0x20
  1570. #define    fInvisible    0x40
  1571.  
  1572. #define    fTrash        -3
  1573. #define    fDesktop    -2
  1574. #define    fDisk        0
  1575.  
  1576. #define fsAtMark    0
  1577. #define fsFromStart    1
  1578. #define fsFromLEOF    2
  1579. #define fsFromMark    3
  1580.  
  1581. #define fsCurPerm    0
  1582. #define fsRdPerm    1
  1583. #define fsWrPerm    2
  1584. #define fsRdWrPerm    3
  1585.  
  1586. struct Finfo {
  1587.     OSType            fdType;
  1588.     OSType            fdCreator;
  1589.     short            fdFlags;
  1590.     Point            fdLocation;
  1591.     short            fdFldr;
  1592. };
  1593. typedef struct Finfo        Finfo;
  1594.  
  1595. struct ioParam {
  1596.     short            ioRefNum;
  1597.     SignedByte        ioVersNum;
  1598.     SignedByte         ioPermssn;
  1599.     Ptr                ioMisc;
  1600.     Ptr                ioBuffer;
  1601.     long            ioReqCount;
  1602.     long            ioActCount;
  1603.     short            ioPosMode;
  1604.     long            ioPosOffset;
  1605. };
  1606.  
  1607. struct fileParam {
  1608.     short            ioFRefNum;
  1609.     SignedByte        ioFVersNum;
  1610.     SignedByte        filler1;
  1611.     short            ioFDirIndex;
  1612.     SignedByte        ioFlAttrib;
  1613.     SignedByte        ioFlVersNum;
  1614.     Finfo            ioFlFndrInfo;
  1615.     long            ioFlNum;
  1616.     short            ioFlStBlk;
  1617.     long            ioFlLgLen;
  1618.     long            ioFlPyLen;
  1619.     short            ioFlRStBlk;
  1620.     long            ioFlRLgLen;
  1621.     long            ioFlRPyLen;
  1622.     long            ioFlCrDat;
  1623.     long            ioFlMdDat;
  1624. };
  1625.  
  1626. struct volumeParam {
  1627.     long    filler2;
  1628.     short    ioVolIndex;
  1629.     long    ioVCrDate;
  1630.     long    ioVLsBkUp;
  1631.     short    ioVAtrb;
  1632.     short    ioVNmFls;
  1633.     short    ioVDirSt;
  1634.     short    ioVBlLn;
  1635.     short    ioVNmAlBlks;
  1636.     long    ioVAlBlkSiz;
  1637.     long    ioVClpSiz;
  1638.     short    ioAlBlSt;
  1639.     long    ioVNextFNum;
  1640.     short    ioVFrBlk;
  1641. };
  1642.  
  1643. struct drvQElRec {
  1644.     struct drvQElRec *        drvLink;
  1645.     short                    drvFlags;
  1646.     short                    drvRefNum;
  1647.     short                    drvFSID;
  1648.     short                    drvBlkSize;
  1649. };
  1650.  
  1651. union OpParamType {
  1652.     struct {
  1653.         short                    sg_flags;
  1654.         char                    sg_erase;
  1655.         char                    sg_kill;
  1656.     } conCtl;
  1657.     short    sndVal;
  1658.     short    asncConfig;
  1659.     struct {
  1660.         Ptr    asncBPtr;
  1661.         short    asncBLen;
  1662.     } asyncInBuff;
  1663.     struct {
  1664.         unsigned char    fXOn;
  1665.         unsigned char    fCTS;
  1666.         char            xon;
  1667.         char            xoff;
  1668.         unsigned char    errs;
  1669.         unsigned char    evts;
  1670.         unsigned char    fInX;
  1671.         unsigned char    null;
  1672.     } asyncShk;
  1673.     struct {
  1674.         long    param1;
  1675.         long    param2;
  1676.         long    param3;
  1677.     } printer;
  1678.     struct {
  1679.         Ptr        fontRecPtr;
  1680.         short    fontCurDev;
  1681.     } fontMgr;
  1682.     Ptr        diskBuff;
  1683.     long    asyncNBytes;
  1684.     struct {
  1685.         short    asncS1;
  1686.         short    asncS2;
  1687.         short    asncS3;
  1688.     } asyncStatus;
  1689.     struct {
  1690.         short                    dskTrackLock;
  1691.         long                    dskInfoBits;
  1692.         struct drvQElRec        dskQElem;
  1693.         short                    dskPrime;
  1694.         short                    dskErrCnt;
  1695.     } diskStat;
  1696. };
  1697. typedef union OpParamType        OpParamType;
  1698. typedef union OpParamType *        OpParamPtr;
  1699.  
  1700. struct cntrlParam {
  1701.     short            csRefNum;
  1702.     short            csCode;
  1703.     OpParamType        csParam;
  1704. };
  1705.  
  1706. struct ParamBlkRec {
  1707.     struct ParamBlkRec *    ioLink;
  1708.     short                    ioType;
  1709.     short                    ioTrap;
  1710.     Ptr                        ioCmdAddr;
  1711.     ProcPtr                    ioCompletion;
  1712.     short                    ioResult;
  1713.     char *                    ioNamePtr;
  1714.     short                    ioVRefNum;
  1715.     union {
  1716.         struct ioParam iop;
  1717.         struct fileParam fp;
  1718.         struct volumeParam vp;
  1719.         struct cntrlParam cp;
  1720.     } u;
  1721. };
  1722. typedef struct ParamBlkRec        ParamBlkRec;
  1723. typedef struct ParamBlkRec *    ParmBlkPtr;
  1724.  
  1725.  
  1726.        void        AddDrive();
  1727.        OSErr    OpenDriver();
  1728.        OSErr    CloseDriver();
  1729.        OSErr    FSOpen();
  1730.        OSErr    FSClose();
  1731.        OSErr    FSRead();
  1732.        OSErr    FSWrite();
  1733.        OSErr    Control();
  1734.        OSErr    Status();
  1735.        OSErr    KillIO();
  1736.        OSErr    GetVInfo();
  1737.        OSErr    GetFInfo();
  1738.        OSErr    GetVol();
  1739.        OSErr    SetVol();
  1740.        OSErr    UnmountVol();
  1741.        OSErr    Eject();
  1742.        OSErr    FlushVol();
  1743.        OSErr    Create();
  1744.        OSErr    FSDelete();
  1745.        OSErr    OpenRF();
  1746.        OSErr    SetFInfo();
  1747.        OSErr    SetFLock();
  1748.        OSErr    RstFLock();
  1749.        OSErr    SetFType();
  1750.        OSErr    Allocate();
  1751.        OSErr    GetEOF();
  1752.        OSErr    SetEOF();
  1753.        OSErr    GetFPos();
  1754.        OSErr    SetFPos();
  1755.        OSErr    FlushFile();
  1756.        OSErr    Rename();
  1757. pascal void        InitQueue();
  1758.        QHdrPtr    GetDrvQHdr();
  1759.        QHdrPtr    GetFSQHdr();
  1760.        QHdrPtr    GetVCBQHdr();
  1761. pascal OSErr    PBMountVol();
  1762. pascal OSErr    PBGetVInfo();
  1763. pascal OSErr    PBGetVol();
  1764. pascal OSErr    PBSetVol();
  1765. pascal OSErr    PBFlushVol();
  1766. pascal OSErr    PBUnmountVol();
  1767. pascal OSErr    PBOffLine();
  1768. pascal OSErr    PBEject();
  1769. pascal OSErr    PBCreate();
  1770. pascal OSErr    PBOpen();
  1771. pascal OSErr    PBOpenRF();
  1772. pascal OSErr    PBRead();
  1773. pascal OSErr    PBWrite();
  1774. pascal OSErr    PBGetFPos();
  1775. pascal OSErr    PBSetFPos();
  1776. pascal OSErr    PBGetEOF();
  1777. pascal OSErr    PBSetEOF();
  1778. pascal OSErr    PBAllocate();
  1779. pascal OSErr    PBFlushFile();
  1780. pascal OSErr    PBClose();
  1781. pascal OSErr    PBGetFInfo();
  1782. pascal OSErr    PBSetFInfo();
  1783. pascal OSErr    PBSetFLock();
  1784. pascal OSErr    PBRstFLock();
  1785. pascal OSErr    PBSetFVers();
  1786. pascal OSErr    PBRename();
  1787. pascal OSErr    PBDelete();
  1788. pascal OSErr    PBControl();
  1789. pascal OSErr    PBStatus();
  1790. pascal OSErr    PBKillIO();
  1791.  
  1792. /* include/print */
  1793. #define    bDraftLoop        0
  1794. #define    bSpoolLoop        1
  1795. #define    bUser1Loop        2
  1796. #define    bUser2Loop        3
  1797.  
  1798. #define    iPrBitsCtl        4
  1799. #define    lScreenBits        0
  1800. #define    lPaintBits        1
  1801. #define    iPrIOCtl        5
  1802. #define    iPrEvtCtl        6
  1803. #define    iPrEvtAll        0x0002fffd
  1804. #define    iPrEvtTop        0x0001fffd
  1805. #define    iPrDevCtl        7
  1806. #define    lPrReset        0x00010000
  1807. #define    lPrPageEnd        0x00020000
  1808. #define    lPrLineFeed        0x00030000
  1809. #define    iFMgrCtl        8
  1810.  
  1811. #define    iPFMaxPgs        128
  1812. #define    iPrPgFract        120
  1813. #define    iPrAbort        128
  1814. #define    iPrRelease        2
  1815. #define    lPfType            'PFIL'
  1816. #define    lPfSig            'PSYS'
  1817.  
  1818. #define    sPrDrvr            "\P.Print"
  1819. #define    iPrDrvrRef        (-3)
  1820. #define    lPrintType        'PREC'
  1821. #define    iPrintDef        0
  1822. #define    iPrintLst        1
  1823. #define    iPrintDrvr        2
  1824. #define    iMyPrDrvr        0xe000
  1825. #define    iPStrRFil        0xe000
  1826. #define    iPStrPFil        0xe001
  1827. #define    iPrStlDlg        0xe000
  1828. #define    iPrJobDlg        0xe001
  1829.  
  1830. typedef char                TStr80[81];
  1831. typedef TStr80 *            TPStr80;
  1832.  
  1833. typedef Rect *                TPRect;
  1834.  
  1835. struct TPrPort {
  1836.     GrafPort    gPort;
  1837.     QDProcs        gProcs;
  1838.     long        lGParam1;
  1839.     long        lGParam2;
  1840.     long        lGParam3;
  1841.     long        lGParam4;
  1842.     Boolean        fOurPtr;
  1843.     Boolean        fOurBits;
  1844. };
  1845. typedef struct TPrPort        TPrPort;
  1846. typedef struct TPrPort *    TPPrPort;
  1847.  
  1848. union TPPort {
  1849.     GrafPtr        pGPort;
  1850.     TPPrPort    pPrPort;
  1851. };
  1852. typedef union TPPort        TPPort;
  1853.  
  1854. struct TPrInfo {
  1855.     short        iDev;
  1856.     short        iVRes;
  1857.     short        iHRes;
  1858.     Rect        rPage;
  1859. };
  1860. typedef struct TPrInfo        TPrInfo;
  1861.  
  1862. typedef unsigned char        TFeed;
  1863.  
  1864. #define    feedCut        0
  1865. #define    feedFanfold    1
  1866. #define    feedMechCut    2
  1867. #define    feedOther    3
  1868.  
  1869. typedef short                TWord;
  1870.  
  1871. struct TPrStl {
  1872.     TWord        wDev;
  1873.     short        iPageV;
  1874.     short        iPageH;
  1875.     SignedByte    bPort;
  1876.     TFeed        feed;
  1877. };
  1878. typedef struct TPrStl        TPrStl;
  1879.  
  1880. struct TPrJob {
  1881.     short        iFstPage;
  1882.     short        iLstPage;
  1883.     short        iCopies;
  1884.     SignedByte    bJDocLoop;
  1885.     Boolean        fFromUsr;
  1886.     ProcPtr        pIdleProc;
  1887.     TPStr80        pFileName;
  1888.     short        iFileVol;
  1889.     SignedByte    bFileVers;
  1890.     SignedByte    bJobX;
  1891. };
  1892. typedef struct TPrJob        TPrJob;
  1893.  
  1894. typedef unsigned char        TScan;
  1895.  
  1896. #define    scanTB    0
  1897. #define    scanBT    1
  1898. #define    scanLR    2
  1899. #define    scanRL    3
  1900.  
  1901. struct TPrXInfo {
  1902.     short        iRowBytes;
  1903.     short        iBandV;
  1904.     short        iBandH;
  1905.     short        iDevBytes;
  1906.     short        iBands;
  1907.     SignedByte    bPatScale;
  1908.     SignedByte    bUlThick;
  1909.     SignedByte    bUlOffset;
  1910.     SignedByte    bUlShadow;
  1911.     TScan        scan;
  1912.     SignedByte    bXInfoX;
  1913. };
  1914. typedef struct TPrXInfo        TPrXInfo;
  1915.  
  1916. struct TPrint {
  1917.     short        iPrVersion;
  1918.     TPrInfo        prInfo;
  1919.     Rect        rPaper;
  1920.     TPrStl        prStl;
  1921.     TPrInfo        prInfoPt;
  1922.     TPrXInfo    prXInfo;
  1923.     TPrJob        prJob;
  1924.     short        printX[19];
  1925. };
  1926. typedef struct TPrint        TPrint;
  1927. typedef struct TPrint *        TPPrint;
  1928. typedef struct TPrint **    THPrint;
  1929.  
  1930. struct TPrStatus {
  1931.     short        iTotPages;
  1932.     short        iCurPage;
  1933.     short        iTotCopies;
  1934.     short        iCurCopy;
  1935.     short        iTotBands;
  1936.     short        iCurBand;
  1937.     Boolean        fPgDirty;
  1938.     Boolean        fImaging;
  1939.     THPrint        hPrint;
  1940.     TPPrPort    pPrPort;
  1941.     PicHandle    hPic;
  1942. };
  1943. typedef struct TPrStatus    TPrStatus;
  1944.  
  1945. pascal void            PrOpen();
  1946. pascal void            PrClose();
  1947. pascal void            PrintDefault();
  1948. pascal Boolean        PrValidate();
  1949. pascal Boolean        PrStlDialog();
  1950. pascal Boolean        PrJobDialog();
  1951. pascal void            PrJobMerge();
  1952. pascal TPPrPort        PrOpenDoc();
  1953. pascal void            PrCloseDoc();
  1954. pascal void            PrOpenPage();
  1955. pascal void            PrClosePage();
  1956. pascal void            PrPicFile();
  1957. pascal short        PrError();
  1958. pascal void            PrSetError();
  1959. pascal void            PrDrvrOpen();
  1960. pascal void            PrDrvrClose();
  1961. pascal void            PrCtlCall();
  1962. pascal Handle        PrDrvrDCE();
  1963. pascal short        PrDrvrVers();
  1964. pascal void            PrNoPurge();
  1965. pascal void            PrPurge();
  1966.  
  1967. /* include/resource */
  1968. #define    resSysRef        0x80
  1969. #define    resSysHeap        0x40
  1970. #define    resPurgeable    0x20
  1971. #define    resLocked        0x10
  1972. #define    resProtected    0x08
  1973. #define    resPreload        0x04
  1974. #define    resChanged        0x02
  1975. #define    resUser            0x01
  1976.  
  1977. #define    mapReadOnly        0x80
  1978. #define    mapCompact        0x40
  1979. #define    mapChanged        0x20
  1980.  
  1981. typedef long ResType;
  1982.  
  1983. pascal short            InitResources()            =    0xa995;
  1984. pascal void                RsrcZoneInit()            =    0xa996;
  1985. pascal void                CreateResFile()            =    0xa9b1;
  1986. pascal short            OpenResFile()            =    0xa997;
  1987. pascal void                CloseResFile()            =    0xa99a;
  1988. pascal short            ResError()                =    0xa9af;
  1989. pascal short            CurResFile()            =    0xa994;
  1990. pascal short            HomeResFile()            =    0xa9a4;
  1991. pascal void                UseResFile()            =    0xa998;
  1992. pascal short            CountTypes()            =    0xa99e;
  1993. pascal void                GetIndType()            =    0xa99f;
  1994. pascal void                SetResLoad()            =    0xa99b;
  1995. pascal short            CountResources()        =    0xa99c;
  1996. pascal Handle            GetIndResource()        =    0xa99d;
  1997. pascal Handle            GetResource()            =    0xa9a0;
  1998. pascal Handle            GetNamedResource()        =    0xa9a1;
  1999. pascal void                LoadResource()            =    0xa9a2;
  2000. pascal void                ReleaseResource()        =    0xa9a3;
  2001. pascal void                DetachResource()        =    0xa992;
  2002. pascal short            UniqueID()                =    0xa9c1;
  2003. pascal void                GetResInfo()            =    0xa9a8;
  2004. pascal short            GetResAttrs()            =    0xa9a6;
  2005. pascal void                SetResInfo()            =    0xa9a9;
  2006. pascal void                SetResAttrs()            =    0xa9a7;
  2007. pascal void                ChangedResource()        =    0xa9aa;
  2008. pascal void                AddResource()            =    0xa9ab;
  2009. pascal void                RmveResource()            =    0xa9ad;
  2010. pascal void                AddReference()            =    0xa9ac;
  2011. pascal void                RmveReference()            =    0xa9ae;
  2012. pascal void                UpdateResFile()            =    0xa999;
  2013. pascal void                WriteResource()            =    0xa9b0;
  2014. pascal void                SetResPurge()            =    0xa993;
  2015. pascal short            GetResFileAttrs()        =    0xa9f6;
  2016. pascal void                SetResFileAttrs()        =    0xa9f7;
  2017. pascal long                SizeResource()            =    0xa9a5;
  2018.  
  2019. /* include/retrace */
  2020. typedef struct {
  2021.     QElemPtr    *qLink;
  2022.     short        qType;
  2023.     ProcPtr        vblAddr;
  2024.     short        vblCount;
  2025.     short        vblPhase;
  2026. } VBLTask;
  2027.  
  2028.        OSErr    VInstall();
  2029.        OSErr    VRemove();
  2030.        QHdrPtr    GetVBLQHdr();
  2031.        
  2032. /* include/scrap */
  2033. struct ScrapStuff {
  2034.     long        scrapSize;
  2035.     Handle        scrapHandle;
  2036.     short        scrapCount;
  2037.     short        scrapState;
  2038.     StringPtr    scrapName;
  2039. };
  2040. typedef struct ScrapStuff        ScrapStuff;
  2041. typedef struct ScrapStuff *        PScrapStuff;
  2042.  
  2043. pascal PScrapStuff            InfoScrap()            =    0xa9f9;
  2044. pascal long                    UnloadScrap()        =    0xa9fa;
  2045. pascal long                    LoadScrap()            =    0xa9fb;
  2046. pascal long                    GetScrap()            =    0xa9fd;
  2047. pascal long                    ZeroScrap()            =    0xa9fc;
  2048. pascal long                    PutScrap()            =    0xa9fe;
  2049.  
  2050. /* include/segment */
  2051.  
  2052. #define    appOpen        0
  2053. #define appPrint    1
  2054.  
  2055. struct AppFile {
  2056.     short    vRefNum;
  2057.     OSType    fType;
  2058.     short    versNum;
  2059.     Str255    fName;
  2060. };
  2061. typedef struct AppFile        AppFile;
  2062.  
  2063. pascal void        LoadSeg()        =    0xa9f0;
  2064. pascal void        UnloadSeg()        =    0xa9f1;
  2065. pascal void        ExitToShell()    =    0xa9f4;
  2066. pascal void        GetAppParms()    =    0xa9f5;
  2067.        void        Launch();
  2068.        void        Chain();
  2069.        void        CountAppFiles();
  2070.        void        GetAppFiles();
  2071.        void        ClrAppFiles();
  2072.  
  2073. /* include/serial */
  2074.  
  2075. #define    baud300        380
  2076. #define    baud600        189
  2077. #define    baud1200    94
  2078. #define    baud1800    62
  2079. #define    baud2400    46
  2080. #define    baud3600    30
  2081. #define    baud4800    22
  2082. #define    baud7200    14
  2083. #define    baud9600    10
  2084. #define    baud19200    4
  2085. #define    baud57600    0
  2086.  
  2087. #define    stop10        0x4000
  2088. #define    stop15        0x8000
  2089. #define    stop20        0xc000
  2090.  
  2091. #define    noParity    0x2000
  2092. #define    oddParity    0x1000
  2093. #define    evenParity    0x3000
  2094.  
  2095. #define    data5        0x0000
  2096. #define    data6        0x0800
  2097. #define    data7        0x0400
  2098. #define    data8        0x0c00
  2099.  
  2100. #define    swOverrunErr    0x01
  2101. #define    parityErr        0x10
  2102. #define    hwOverrunErr    0x20
  2103. #define framingErr        0x40
  2104.  
  2105. #define    ctsEvent        0x20
  2106. #define    breakEvent        0x80
  2107.  
  2108. #define    xOffWasSent        0x80
  2109.  
  2110. #define    sPortA        0x000
  2111. #define    sPortB        0x100
  2112.  
  2113. typedef struct {
  2114.     char            fXOn;
  2115.     char            fCTS;
  2116.     unsigned char    xOn;
  2117.     unsigned char    xOff;
  2118.     char            errs;
  2119.     char            evts;
  2120.     char            fInX;
  2121.     char            null;
  2122. } SerShk;
  2123.  
  2124. typedef struct {
  2125.     char            cumErrs;
  2126.     char            xOffSent;
  2127.     char            rdPend;
  2128.     char            wrPend;
  2129.     char            ctsHold;
  2130.     char            xOffHold;
  2131. } SerStaRec;
  2132.  
  2133.        OSErr        RamSDOpen();
  2134.        void            RamSDClose();
  2135.        OSErr        SerReset();
  2136.        OSErr        SerSetBuf();
  2137.        OSErr        SerHShake();
  2138.        OSErr        SerSetBrk();
  2139.        OSErr        SerClrBrk();
  2140.        OSErr        SerGetBuf();
  2141.        OSErr        SerErrFlg();
  2142.        
  2143. /* include/setjmp */
  2144. #define    JBUFSIZE    9
  2145. typedef long jmp_buf[JBUFSIZE];
  2146.  
  2147. /* include/sgtty */
  2148. #define TIOCGETP    0        /* read contents of tty control structure */
  2149. #define TIOCSETP    1        /* set contents of tty control structure */
  2150. #define TIOCSETN    2        /* ditto only don't wait for output to flush */
  2151.  
  2152. struct sgttyb {
  2153.     short sg_flags;        /* control flags */
  2154.     char sg_erase;
  2155.     char sg_kill;
  2156. };
  2157.  
  2158. /* settings for flags */
  2159. #define    TABSIZ    0x000f    /* size of tab if XTABS is set */
  2160. #define    XTABS    0x0010    /* convert tabs to spaces on output */
  2161. #define    CRMOD    0x0020    /* CR -> LF on input, LF -> CR/LF on output */
  2162. #define    ECHO    0x0040    /* echo input to output */
  2163. #define    ECHOE    0x0080    /* follow erase character by space, BS */
  2164. #define    CBREAK    0x0100    /* don't wait for the whole line */
  2165. #define    NODELAY    0x0200    /* return even if no characters */
  2166. #define RAW        0x0400    /* no input or output mapping at all */
  2167. #define    CHKKEY    0x0800    /* check for keyboard characters during output */
  2168. #define    ERASE    0x1000    /* erase character space before drawing */
  2169.  
  2170. /* include/sound */
  2171. #define    swMode    -1
  2172. #define    ftMode    1
  2173. #define    ffMode    0
  2174.  
  2175. typedef char    FreeWave[30001];
  2176.  
  2177. typedef struct {
  2178.     short        mode;
  2179.     Fixed        count;
  2180.     FreeWave    waveBytes;
  2181. } FFSynthRec, *FFSynthPtr;
  2182.  
  2183. typedef struct {
  2184.     short        count;
  2185.     short        amplitude;
  2186.     short        duration;
  2187. } Tone, Tones[5001];
  2188.  
  2189. typedef struct {
  2190.     short        mode;
  2191.     Tones        triplets;
  2192. } SWSynthRec, *SWSynthPtr;
  2193.  
  2194. typedef char    Wave[256];
  2195. typedef Wave *    WavePtr;
  2196.  
  2197. typedef struct {
  2198.     short        duration;
  2199.     Fixed        sound1Rate;
  2200.     long        sound1Phase;
  2201.     Fixed        sound2Rate;
  2202.     long        sound2Phase;
  2203.     Fixed        sound3Rate;
  2204.     long        sound3Phase;
  2205.     Fixed        sound4Rate;
  2206.     long        sound4Phase;
  2207.     WavePtr        sound1Wave;
  2208.     WavePtr        sound2Wave;
  2209.     WavePtr        sound3Wave;
  2210.     WavePtr        sound4Wave;
  2211. } FTSoundRec, *FTSndRecPtr;
  2212.  
  2213. typedef struct {
  2214.     short        mode;
  2215.     FTSndRecPtr    sndRec;
  2216. } FTSynthRec, *FTSynthPtr;
  2217.  
  2218.        void        StartSound();
  2219.        void        StopSound();
  2220.        Boolean    SoundDone();
  2221.        void        GetSoundVol();
  2222.        void        SetSoundVol();
  2223.  
  2224. /* include/stdio */
  2225. #define fgetc getc
  2226. #define fputc putc
  2227. #define NULL (0L)
  2228. #define EOF (-1)
  2229.  
  2230. #define BUFSIZ 1024
  2231. #define MAXSTREAM    11
  2232.  
  2233. #define _BUSY    0x01
  2234. #define _ALLBUF    0x02
  2235. #define _DIRTY    0x04
  2236. #define _EOF    0x08
  2237. #define _IOERR    0x10
  2238.  
  2239. typedef struct {
  2240.     char *_bp;            /* current position in buffer */
  2241.     char *_bend;        /* last character in buffer + 1 */
  2242.     char *_buff;        /* address of buffer */
  2243.     char _flags;        /* open mode, etc. */
  2244.     char _unit;            /* token returned by open */
  2245.     char _bytbuf;        /* single byte buffer for unbuffer streams */
  2246.     int    _buflen;        /* length of buffer */
  2247. } FILE;
  2248.  
  2249. extern FILE Cbuffs[];
  2250. FILE *fopen();
  2251. long ftell();
  2252.  
  2253. #define stdin (&Cbuffs[0])
  2254. #define stdout (&Cbuffs[1])
  2255. #define stderr (&Cbuffs[2])
  2256. #define getchar() agetc(stdin)
  2257. #define putchar(c) aputc(c, stdout)
  2258. #define feof(fp) (((fp)->_flags&_EOF)!=0)
  2259. #define ferror(fp) (((fp)->_flags&_IOERR)!=0)
  2260. #define clearerr(fp) ((fp)->_flags &= ~(_IOERR|_EOF))
  2261. #define fileno(fp) ((fp)->_unit)
  2262. #define fflush(fp) flsh_(fp,-1)
  2263.  
  2264. /* include/syserr */
  2265. /* Macintosh OS system errors    */
  2266.  
  2267. #define    noErr    0       /* All is well */
  2268.  
  2269.         /* file system error codes */
  2270.  
  2271. #define    qErr            (-1)
  2272. #define    vTypErr            (-2)
  2273.  
  2274. #define    dirFulErr        (-33)    /* Directory full */
  2275. #define    dskFulErr        (-34)    /* disk full */
  2276. #define    nsvErr            (-35)    /* no such volume */
  2277. #define    ioErr            (-36)    /* I/O error (bummers) */
  2278. #define    bdNamErr        (-37)    /* there may be no bad names in the final system! */
  2279. #define    fnOpnErr        (-38)    /* File not open */
  2280. #define    eofErr            (-39)    /* End of file */
  2281. #define    posErr            (-40)    /* tried to position to before start of file */
  2282. #define    mFulErr            (-41)    /* memory full(open) or file won't fit (load) */
  2283. #define    tmfoErr            (-42)    /* too many files open */
  2284. #define    fnfErr            (-43)    /* File not found */
  2285.  
  2286. #define    wPrErr            (-44)    /* diskette is write protected */
  2287. #define    fLckdErr        (-45)    /* file is locked */
  2288. #define    vLckdErr        (-46)    /* volume is locked */
  2289. #define    fBsyErr            (-47)    /* File is busy (delete) */
  2290. #define    dupFNErr        (-48)    /* duplicate filename (rename) */
  2291. #define    opWrErr            (-49)    /* file already open with with write permission */
  2292. #define    paramErr        (-50)    /* error in user parameter list */
  2293. #define    rfNumErr        (-51)    /* refnum error */
  2294. #define    gfpErr            (-52)    /* get file position error */
  2295. #define    volOffLinErr    (-53)    /* volume not on line error (was Ejected) */
  2296. #define    permErr            (-54)    /* permissions error (on file open) */
  2297. #define    volOnLinErr        (-55)    /* drive volume already on- ine at MountVol */
  2298. #define    nsDrvErr        (-56)    /* no such drive (tried to mount a bad drive #) */
  2299. #define    noMacDskErr        (-57)    /* not a mac diskette (sig bytes are wrong) */
  2300. #define    extFSErr        (-58)    /* volume in question belongs to an external fs */
  2301. #define    fsRnErr            (-59)    /* Problem during rename */
  2302. #define    badMDBErr        (-60)    /* bad master directory block */
  2303. #define    wrPermErr        (-61)    /* write permissions error */
  2304.  
  2305. #define    clkRdErr        (-85)
  2306. #define clkWrErr        (-86)
  2307. #define prWrErr            (-87)
  2308. #define prInitErr        (-88)
  2309.  
  2310. #define noScrapErr        (-100)
  2311. #define noTypeErr        (-102)
  2312.  
  2313.  
  2314. #define    memFullErr        (-108)    /* Not enough room in heap zone */
  2315. #define    nilHandleErr    (-109)    /* Master Pointer was NIL in HandleZone */
  2316. #define    memWZErr        (-111)    /* WhichZone failed (applied to free block) */
  2317. #define    memPurErr        (-112)    /* trying to purge a locked or
  2318.                                                         non-purgeable block */
  2319.  
  2320. #define    resNotFound        (-192)
  2321. #define    resFNotFound    (-193)
  2322. #define    addResFailed    (-194)
  2323. #define    addRefFailed    (-195)
  2324. #define    rmvResFailed    (-196)
  2325. #define    rmvRefFailed    (-197)
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.